$(function () {
  //1.初始化Table
  var oTable = new TableInit();
  oTable.Init();
  //2.初始化Button的点击事件
  var oButtonInit = new ButtonInit();
  oButtonInit.Init();
});
var TableInit = function () {
  var oTableInit = new Object();
  //初始化Table
  oTableInit.Init = function () {
    $('#tb_departments').bootstrapTable({
      url: 'resourcelist',		 //请求后台的URL（*）
      method: 'get',      //请求方式（*）
      toolbar: '#toolbar',    //工具按钮用哪个容器
      striped: true,      //是否显示行间隔色
      cache: true,      //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
      pagination: true,     //是否显示分页（*）
      sortable: true,      //是否启用排序
      sortOrder: "asc",     //排序方式
      queryParams: oTableInit.queryParams,//传递参数（*）
      sidePagination: "server",   //分页方式：client客户端分页，server服务端分页（*）
      pageNumber:1,      //初始化加载第一页，默认第一页
      pageSize: 10,      //每页的记录行数（*）
      pageList: [10, 25, 50, 100],  //可供选择的每页的行数（*）
      search: false,      //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
      strictSearch: true,
      showColumns: false,     //是否显示所有的列
      showRefresh: false,     //是否显示刷新按钮
      minimumCountColumns: 2,    //最少允许的列数
      clickToSelect: true,    //是否启用点击选中行
      //height: 550,      //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
      uniqueId: "pid",      //每一行的唯一标识，一般为主键列
      showToggle:false,     //是否显示详细视图和列表视图的切换按钮
      cardView: false,     //是否显示详细视图
      detailView: true,     //是否显示父子表
      responseHandler:responseHandler,
      columns: [{
        checkbox: true
      }, {
        field: 'name',
        title: '菜单名称'
      }, {
        field: 'href',
        title: '菜单链接'
      }, {
		  field: 'menuType',
		  title: '菜单类型',
		  formatter:function(value,row,index){
			  if(value==1){
				  return "系统菜单";
			  }
			  if(value==2){
				  return "公共菜单";
			  }
		  }
	  }, {
        field: 'description',
        title: '菜单描述',
        formatter:function(value,row,index){  
                if(value){
                	return value;
                }else{
                	return "";
                }
            }
      }],
      onExpandRow: function (index, row, $detail) {
    	  if(row.subResource.length>0){
    		  InitSubTable(index, row, $detail);
    	  }
      }
    });
  };
  //得到查询的参数
  oTableInit.queryParams = function (params) {
    var temp = {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
      limit: params.limit,   //页面大小
      offset: params.offset,  //页码
      departmentname1: $("#txt_search_departmentname").val(),
      departmentname2: '1',
      order:params.order,
      statu: $("#txt_search_statu").val()
    };
    return temp;
  };
  return oTableInit;
};
//子表
function InitSubTable(index, row, $detail) {
	  var parentid = row.pid;
	  var cur_table = $detail.html('<table id="child'+index+'"></table>').find('table');
	  $(cur_table).bootstrapTable({
	    data: row.subResource,
	    method: 'get',
	    queryParams: { strParentID: parentid },
	    ajaxOptions: { strParentID: parentid },
	    clickToSelect: true,
	    detailView: true,//父子表
	    uniqueId: "pid",
	    pageSize: 10,
	    pageList: [10, 25],
	    detailView: false,
	    columns: [{
	      checkbox: true
	    }, {
	      field: 'name',
	      title: '菜单名称'
	    }, {
	      field: 'href',
	      title: '菜单链接'
	    },{
			field: 'menuType',
			title: '菜单类型',
			formatter:function(value,row,index){
				if(value==1){
					return "系统菜单";
				}
				if(value==2){
					return "公共菜单";
				}
			}
		}, {
	      field: 'description',
	      title: '菜单描述'
	    },]
	  });
	};
var ButtonInit = function () {
  var oInit = new Object();
  var postdata = {};
  oInit.Init = function () {
    //初始化页面上面的按钮事件
  };
  return oInit;
};

$(function () {
	$("#btn_query").bind("click",function(){
		$('#tb_departments').bootstrapTable('refresh');
	});
});
function responseHandler(res) {
/*	var emp = new Array();
	var temp=res.rows;
	for(i=0;i<temp.length;i++){
		if(temp[i].resourceType==('1')){
			//res.rows.remove(temp[i]);
			emp.push(temp[i]);
		}
	}
	res.rows=emp;*/
	return res;
}
function showlock(){
	window.parent.window.lock();
	return false;
}
function addMenu(parent){
	var val = new validate({
		/*rules里面是检验规则，
		*key为需要检验的input的id,
		*value为此input对应的检验规则
		*/
		rules:{
			MenuName:"notEmpty",   
			MenuUrl:"notEmpty",
			Menudes:"notEmpty"
		},
		/*submitFun里面为检验成功后要执行的方法*/
		submitFun:function(){
			var menu=new Object();
			menu.name=$("#MenuName").val();
			menu.href=$("#MenuUrl").val();
			menu.menuType=$("#munutype").val();
			menu.description=$("#Menudes").val();
			if(parent!= undefined){
				menu['parent.pid']=parent;
				menu.parentid=parent;
				menu.resourceType=2;
			}else{
				menu.resourceType=1;
			}
			var options = {
		            url: 'doSave',
		            type: 'post',
		            dataType: 'text',
		            data:menu,
		            success: function (data) {
		                if (data.length > 0)
		                	var obj = jQuery.parseJSON(data); 
		                if(obj.success){
		                	refreshTable();
		                	$("#modal").remodal().close();
		                }
		                swal(obj.msg);
		            }
		        };
		 $.ajax(options);
		}
	})
}
function editMenu(pid){
	var val = new validate({
		/*rules里面是检验规则，
		*key为需要检验的input的id,
		*value为此input对应的检验规则
		*/
		rules:{
			MenuName:"notEmpty",   
			MenuUrl:"notEmpty",
			Menudes:"notEmpty"
		},
		/*submitFun里面为检验成功后要执行的方法*/
		submitFun:function(){
		var menu=new Object();
		menu=$('#tb_departments').bootstrapTable('getRowByUniqueId',pid);
		if(menu==null){
			for(i=0;i<10;i++){
				var temp=$('#child'+i).bootstrapTable('getSelections');
				if(temp.length>0){
					menu=temp[0];
					break;
				}
			}
		}
		if(menu.parentid!=null){
			menu['parent.pid']=menu.parentid;
		}
		menu.name=$("#MenuName").val();
		menu.href=$("#MenuUrl").val();
		menu.description=$("#Menudes").val();
		menu.menuType=$("#munutype").val();
		menu.createTime=new Date(menu.createTime);
		var options = {
	            url: 'doUpdate',
	            type: 'post',
	            dataType: 'text',
	            data:menu,
	            success: function (data) {
	                if (data.length > 0)
	                	var obj = jQuery.parseJSON(data);
	                if(obj.success){
	                	refreshTable();
	                	$("#modal").remodal().close();
	                }
	                swal(obj.msg);
	            }
	        };
	 $.ajax(options);
		}
	})
}
function addShow(){
	$("#MenuName").val('');
	$("#MenuUrl").val('');
	$("#Menudes").val('');
	menu.menuType=$("#munutype").val();
	var selects = $("#tb_departments").bootstrapTable('getSelections');
	var selects1=new Array();
	for(i=0;i<10;i++){
		var temp=$('#child'+i).bootstrapTable('getSelections');
		if(temp.length>0){
			selects1.push(temp[0]);
		}
	}
	if (selects1.length <= 0) {
		if (selects.length > 0) {
			if (selects.length == 1) {
				$("#modalTitle").text('新建 二级菜单');
				$("#MenuCon").attr('onclick', 'addMenu(' + selects[0].pid + ')');
				$("#modal").remodal().open();
			} else {
				swal("只能选择1行数据新增子菜单");
			}
		} else {
			$("#modalTitle").text("新建一级菜单");
			$("#MenuCon").attr('onclick', 'addMenu()');
			$("#modal").remodal().open();
		}
	}else{
		swal("最多新建二级菜单");
	}
}
function editShow(){
	var selects = $("#tb_departments").bootstrapTable('getSelections');
	var selects1=new Array();
	for(i=0;i<10;i++){
		var temp=$('#child'+i).bootstrapTable('getSelections');
		if(temp.length>0){
			for(j=0;j<temp.length;j++){
				selects1.push(temp[j]);
			}
		}
	}
	if((selects.length+selects1.length)>0){
		if((selects.length+selects1.length)==1){
			if (selects.length == 1) {
				$("#modalTitle").text("修改-"+selects[0].name+"-菜单");
				$("#MenuName").val(selects[0].name);
				$("#MenuUrl").val(selects[0].href);
				$("#munutype").val(selects[0].menuType);
				$("#Menudes").val(selects[0].description);
				$("#MenuCon").attr('onclick','editMenu(' + selects[0].pid + ')');
				$("#modal").remodal().open();
			}else{
				$("#modalTitle").text("修改-"+selects1[0].name+"-菜单");
				$("#MenuName").val(selects1[0].name);
				$("#MenuUrl").val(selects1[0].href);
				$("#munutype").val(selects1[0].menuType);
				$("#Menudes").val(selects1[0].description);
				$("#MenuCon").attr('onclick','editMenu(' + selects1[0].pid + ')');
				$("#modal").remodal().open();
			}
		}else{
			swal("修改只能选择1行数据");
		}
	}else{
		swal("至少选择1行数据");
	}
}
function deleteMenu(){
	var selects = $("#tb_departments").bootstrapTable('getSelections');
	for(i=0;i<10;i++){
		var temp=$('#child'+i).bootstrapTable('getSelections');
		if(temp.length>0){
			for(j=0;j<temp.length;j++){
				selects.push(temp[j]);
			}
		}
	}
	var pids=new Array();
	for (var i=0;i<selects.length;i++){
		pids[i]=selects[i].pid;
	}

	var options = {
            url: 'logicDelete',
            type: 'post',
            dataType: 'text',
            data:{'pids':JSON.stringify(pids)},
            success: function (data) {
                if (data.length > 0)
                	var obj = jQuery.parseJSON(data);
                if(obj.success){
                	refreshTable();
                	swal("删除成功!", 
            				"你选择的菜单已经删除.", 
            				"success"
            				); 
                }else{
                	swal(obj.msg);
                }
            }
        };
 $.ajax(options);
}
function deleteCon(){
	var selects = $("#tb_departments").bootstrapTable('getSelections');
	for(i=0;i<10;i++){
		var temp=$('#child'+i).bootstrapTable('getSelections');
		if(temp.length>0){
			for(j=0;j<temp.length;j++){
				selects.push(temp[j]);
			}
		}
	}
	if(selects.length>0){
		swal({   title: "你确定要删除?",  
			text: "菜单删除后将无法找回!(父菜单删除后子菜单也无法找回)",  
			type: "warning",   
			showCancelButton: true,   
			confirmButtonColor: "#DD6B55",   
			confirmButtonText: "确定!",
			cancelButtonText: "取消",
			closeOnConfirm: false }, 
			function(){   
				deleteMenu();
			});
	}else{
		swal("至少选择1行数据");
	}
}
function refreshTable(){
	$("#tb_departments").bootstrapTable('refresh');
}